#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = '汤小洋'

'''
在Python中可以通过不同进制来表示整数
但在打印输出时都是以十进制的形式显示的
'''
a = 10
b = 0b10  # 二进制以Ob开头
c = 0o10  # 八进制以Oo开头
d = 0x10  # 十六进制以Ox开头
print(a, b, c, d)

# 将数值转换为二进制、八进制、十进制、十六进制
# print('{:b}'.format(10))  # 返回对应的二进制
# print('{:o}'.format(10))  # 返回对应的八进制
# print('{:d}'.format(10))  # 返回对应的十进制
# print('{:x}'.format(10))  # 返回对应的小写十六进制
# print('{:X}'.format(10))  # 返回对应的大写十六进制
# print("{0:b}、{0:o}、{0:d}、{0:x}、{0:X}".format(10))
print("{0:b}、{0:o}、{0:d}、{0:x}、{0:X}".format(0x4DC0))

'''
位运算符：针对二进制数的位进行运算
    与& 或| 非~ 异或^ 左移<< 右移>>
'''
a = 5  # 二进制 00000000 00000000 00000000 00000101
b = 8  # 二进制 00000000 00000000 00000000 00001000
print(a & b)  # 两位都是1才为1，否则为0
print(a | b)  # 只要有一个为1，则为1，否则为0
print(~a)  # 如果为1，则为0，如果为0，则为1（二进制首位为1表示负数，也称为补码，其值为：反码+1，然后再加个负号-）
print(a ^ b)  # 如果两位相同则为0，不同则为1
print(b >> 2)  # 将二进制的所有位都向右移动指定的次数
